package com.mf.service.upload;

import com.mf.enums.EnumBasicResultCode;
import io.github.heollhai.common.result.Result;
import org.springframework.web.multipart.MultipartFile;

/**
 * @Author: lmf
 * @Create: 2024/11/20 21:48
 * Description: 文件上传业务接口
 */
public interface IFileUploadBusiness {
     /**
     * 完整文件上传
     */
    Boolean uploadFile(String bucketName,String objectName, MultipartFile file);

    /**
     * 分片文件上传
     * 1.去缓存取出对应索引信息，判断此次给的索引信息是否相同，不相同则告知
     * 2.上传分片文件以后则删除缓存数据
     * 3.全部分片上传完后data数据返回-1
     *
     * @param fullMd5Name  当前文件名
     * @param totalPieces 总分片数量
     * @param sliceIndex  当前传过来的分片索引
     * @param file        文件
     */
    Integer uploadSliceFile(String fullMd5Name, Integer totalPieces, Integer sliceIndex, MultipartFile file);

    /**
     * 分片文件合并
     *
     * @param totalPieces 总分片数量
     */
    Boolean composeFile(String bucketName,String fullObjectName, Integer totalPieces);

    /**
     * 删除minio分片文件
     *
     * @param objectName  可以当文件名这里用md5
     * @param totalPieces 总分片数量
     * @return Boolean ture成功，false是失败
     */
    Boolean delSliceFile(String objectName, Integer totalPieces);

    /**
     * 初始化时创建桶
     *
     * @return Boolean ture成功，false是失败
     */
    Boolean createFileBucket(String bucketName);

    /**
     * 初始化分片入库
     *
     * @return Boolean ture成功，false是失败
     */
    Boolean sliceInRedis(String fullMd5Name, Integer totalSlice);
}
